package com.liqi.filter;

import com.liqi.util.JwtUtil;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwt;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;

@Component
public class MyFilter extends ZuulFilter {





    @Override
    public String filterType() {
        return "pre";
    }

    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() throws ZuulException {
//        RequestContext currentContext = RequestContext.getCurrentContext();
//        HttpServletRequest request = currentContext.getRequest();
//        String s = request.getRequestURL().toString();
//        if(s.contains("login")){
//            return null;
//        }
//
//        String token = request.getHeader("token");
//
//
//        try {
//
//            Claims claims = JwtUtil.parseJWT(token);
//            if(claims != null){
//            String id = claims.getSubject();
//            currentContext.addZuulRequestHeader("userid",id);
//            return null;
//            }
//
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//        currentContext.setSendZuulResponse(false);
//        return null;


        RequestContext currentContext = RequestContext.getCurrentContext();
        HttpServletRequest request = currentContext.getRequest();
        String s = request.getRequestURL().toString();

        if(s.contains("login")){
            return null;
        }






        String token = request.getHeader("token");

        try {
            if(token != null){
            Claims claims = JwtUtil.parseJWT(token);


                String id = claims.getSubject();

                currentContext.addZuulRequestHeader("userid",id);

                return null;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        currentContext.setSendZuulResponse(false);

        return null;

    }
}
